{{tag>matériel webcam domotique sécurité vidéosurveillance}}

----

====== Motion ======

****Motion**** est un logiciel de détection vidéo et qui permet de diffuser un flux vidéo via internet par le protocole HTTP. C'est une solution simple pour diffuser le flux de sa webcam en ligne ou pour détecter des mouvements dans le champ d'une caméra par exemple.

===== Pré-requis =====

  * Disposer des [[:sudo|droits d'administration]].
  * Disposer d'une connexion à Internet configurée et activée.
  * Avoir activé les [[:depots#universe_et_multiverse|dépôts Universe]].
  * Avoir une [[:Webcam|webcam]] qui fonctionne.

Pour vérifier l'installation de votre webcam saisir dans un terminal  : <code>gstreamer-properties</code> dans Video/Test, le test devrait afficher l'image de votre webcam.


===== Installation =====

Il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt://motion|motion]]**



==== Lancement automatique ====


Par défaut, le daemon **motion** n'est pas activé/démarré.

Si l'on veut l'activer, il faut mettre à 'Yes' la variable //start_motion_daemon// dans le fichier **/etc/default/motion**.


En mode utilisateur (hors daemon), le mieux est de copier le fichier **/etc/motion/motion.conf** dans son propre dossier personnel. Dans un [[terminal]] :
  sudo cp /etc/motion/motion.conf ~/
Puis, mettre les bon droits :
  sudo chown $USER ~/motion.conf







==== Configuration de base pour une webcam ====

Maintenant nous allons [[:tutoriel:comment_editer_un_fichier|éditer le fichier]] ''motion.conf''\\

Les variables sont nombreuses et relativement bien expliquées en lignes de commentaires.

Les principaux paramètres a changer sont : **target_dir**,  **width & height** (résolution). Les remplacer par les valeurs de votre choix.

Voici un exemple de motion.conf :

  daemon off
  process_id_file /var/run/motion/motion.pid
  setup_mode off
  videodevice /dev/video0
  v4l2_palette 8
  input 8
  norm 0
  frequency 0
  rotate 0
  width 640
  height 480
  framerate 2
  minimum_frame_time 0
  netcam_tolerant_check off
  auto_brightness off
  brightness 0
  contrast 0
  saturation 0
  hue 0
  roundrobin_frames 1
  roundrobin_skip 1
  switchfilter off
  threshold 1500
  threshold_tune off
  noise_level 32
  noise_tune on
  despeckle EedDl
  smart_mask_speed 0
  lightswitch 0
  minimum_motion_frames 1
  pre_capture 0
  post_capture 0
  gap 60
  max_mpeg_time 0
  output_all off
  output_normal on
  output_motion off
  quality 75
  ppm off
  ffmpeg_cap_new on
  ffmpeg_cap_motion off
  ffmpeg_timelapse 0
  ffmpeg_timelapse_mode daily
  ffmpeg_bps 500000
  ffmpeg_variable_bitrate 0
  ffmpeg_video_codec swf
  ffmpeg_deinterlace off
  snapshot_interval 0
  locate off
  text_right %Y-%m-%d\n%T-%q
  text_changes off
  text_event %Y%m%d%H%M%S
  text_double off
  target_dir /tmp/motion
  snapshot_filename %v-%Y%m%d%H%M%S-snapshot
  jpeg_filename %v-%Y%m%d%H%M%S-%q
  movie_filename %v-%Y%m%d%H%M%S
  timelapse_filename %Y%m%d-timelapse
  webcam_port 8081
  webcam_quality 50
  webcam_motion off
  webcam_maxrate 1
  webcam_localhost off
  webcam_limit 0
  control_port 8080
  control_localhost on
  control_html_output on
  track_type 0
  track_auto off
  track_motorx 0
  track_motory 0
  track_maxx 0
  track_maxy 0
  track_iomojo_id 0
  track_step_angle_x 10
  track_step_angle_y 10
  track_move_wait 10
  track_speed 255
  track_stepsize 40
  quiet on
  sql_log_image on
  sql_log_snapshot on
  sql_log_mpeg off
  sql_log_timelapse off
  sql_query insert into security(camera, filename, frame, file_type, time_stamp, event_time_stamp) values('%t', '%f', %q', '%n', '%Y-%m-%d %T', '%C')

<note tip> Pour connaitre les résolutions supportées, ou tout simplement pour tester sa webcam,  **[[apt://cheese|cheese]]** est un bon candidat.</note>


Ici, les mouvements détectés par la webcam seront sauvegardés au format swf, résolution 640x480 dans le répertoire /tmp/motion.

Le flux video de la webcam sera accessible par tous (**webcam_localhost off**) sur le port 8081.


Pour démarrer le processus : 

  motion -c motion.conf

==== Problèmes connus ====
=====Erreur de segmentation, support ioctl=====
Si vous avez une erreur de segmentation au lancement, essayez avec :

  LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so motion -c motion.conf
  
 Cette commande peux résoudre sur certaines machines , l'erreur ci dessous :
//VIDIOC_G_JPEGCOMP not supported but it should be (does your webcam driver support this ioctl?)//

[[http://www.lavrsen.dk/foswiki/bin/view/Motion/SupportQuestion2009x01x20x183230]]  

====Unable to find a palette format====

Si votre webcam fonctionne avec d'autres logiciels (cheese etc...) mais pas avec motion, et que l'on a une erreur du type "unable to find a palette format", la commande suivante peut résoudre ce problème :
  LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so motion



==== Configuration pour plusieurs webcams ====

Lorsque plusieurs webcams sont utilisées, il faut dédier un fichier //threadN.conf// par webcam.

A la fin du fichier //motion.conf//, rajouter une ligne par webcam.
  thread /chemin_jusque_fichier_thread.conf


Chaque fichier //thread.conf// reprend des paramètres du //motion.conf// qu'il va forcer pour chacune des webcams.
Bien renseigner le paramètre **videodevice** qui doit etre different pour chaque fichier //thread.conf//.

Par défaut, les scripts de post-capture et de pré-capture ///usr/local/motion-extras/// ne sont pas fournis lors de l'installation du paquet **motion**.

Exemple de fichier thread.conf

  videodevice /dev/video1
  input 8
  text_left CAMERA COULOIR 1
  target_dir /tmp/motion
  webcam_port 6881



===== Voir aussi =====

  * [[http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome|Site officiel de Motion]]
  * qmotion :http://slist.lilotux.net/linux/qmotion/index_fr.html qui fait entre autre l'envoi ftp.
  * Kmotion avec interface web http://kmotion.eu/mediawiki/index.php/Main_Page

----
